package com.ys.Map集合;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

/**
 * 描述: Map的常用方法
 *  * 1.Map集合的作用
 *  *   Map集合用于存储“键值对”，键指的就是“key”，值指的就是“value”。Map集合中“key”必须唯一，但是“value”可以重复。
 *  *   例如：生活中，每个人都有“省份证号”，此处的“身份证号”指的就是“key”，每个“身份证号”对应着一个“姓名”，此处的“姓名”值的就是“value”。
 *  *   注意：生活中，身份证号肯定是唯一的，也就意味着Map集合中的“key”为唯一的，但是“姓名”不是唯一的，也就意味着Map集合中的“value”可以重复。
 *  * 2.Map接口的概述
 *  *   Map接口在java.util包中，Map接口和Collection接口没有直接联系，Map接口的实现类有：HashMap、TreeMap、LinkedHashMap、Hashtable、Properties。
 *  * 3.Map接口的方法
 *  *   Object put(Object key, Object value);	存放键值对。
 *  *   Object get(Object key);	            通过键对象查找得到值对象，如果key不存在，则返回null。
 *  *   Object remove(Object key);	            删除键对象对应的键值对，如果删除成功，则返回被删除的value值，如果删除失败，则返回null。
 *  *   boolean containsKey(Object key);	    Map容器中是否包含键对象对应的键值对。如果map中存在该key，则返回true，否则返回false。
 *  *   boolean containsValue(Object value);	Map容器中是否包含值对象对应的键值对。如果map中存在该value，则返回true，否则返回false。
 *  *   Collection values();	                获取集合中所有的值
 *  *   int size();	                            获取包含键值对的数量。
 *  *   boolean isEmpty();	                    判断Map是否为空。
 *  *   void clear();	                        清空本map对象所有键值对。
 *
 * @author CodeYang
 * @version 2020/12/26 20:30
 */
public class Map的常用方法 {
    public static void main(String[] args) {
        // map 在java.util 包中,与collection 没有直接联系
        // Map 的实现类有: HashMap LinkedHashMap TreeMap Properties
        Map<Integer, String> map = new HashMap<>();
        // 1: map 集合存储 key - value 对象 key 值保持唯一性
        // 当 map.put(k,v) k 值重复时, 后面的 value 会 覆盖原有的value
        map.put(1,"1");
        map.put(1,"2");
        //2value map.get(key) 返回 key --对应 --的value 如果 get(key) key 不存在 返回null
        String value = map.get(1);
        System.out.println(value);
        // 3 map.remove(key) 根据key 删除 key-value 对象
        map.remove(1);
        // 返回null
        System.out.println(map.get(1));
        // 4boolean containsKey(Object key); 判断 结合中是否存在 key 对应的key-value 对象 存在返回true | 否则返回 false
        // 返回false ---正确
        System.out.println(map.containsKey(null));

        map.put(null,null);
        // 5boolean containsValue(Object value); 判断 结合中是否存在 value 对应的key-value 对象 存在返回true | 否则返回 false
        // 返回true ---正确
        System.out.println(map.containsValue(null));
        //6Collection values(); 获取集合中所有的值
        System.out.println("---------------");
        map.put(6,"6");
        map.put(7,"7");
        map.put(8,"has");
        Collection<String> values = map.values();
        for (String s : values) {
            System.out.println(s);
        }
        // 7返回 集合中的 元素个数
        System.out.println(map.size());

        // 8 void clear() 清空集合
        map.clear();
       // 9 boolean isEmpty(); 判断集合是否为空
        System.out.println(map.isEmpty());



    }
}
